package edu.upc.poo.pc1.entidades;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

/**
 *
 * @author alumno
 */
public class Factura {
    
    private static double IGV = 0.18;
    
    private String razonSocial;
    private String ruc;
    private Date fecha;
    private String numeroFactura;
    private List<Linea> lineas;

    public Factura() {
    }

    public Factura(String razonSocial, String ruc, Date fecha, String numeroFactura, List<Linea> lineas) {
        this.razonSocial = razonSocial;
        this.ruc = ruc;
        this.fecha = fecha;
        this.numeroFactura = numeroFactura;
        this.lineas = lineas;
    }

    public String getRazonSocial() {
        return razonSocial;
    }

    public void setRazonSocial(String razonSocial) {
        this.razonSocial = razonSocial;
    }

    public String getRuc() {
        return ruc;
    }

    public void setRuc(String ruc) {
        this.ruc = ruc;
    }

    public Date getFecha() {
        return fecha;
    }

    public void setFecha(Date fecha) {
        this.fecha = fecha;
    }

    public String getNumeroFactura() {
        return numeroFactura;
    }

    public void setNumeroFactura(String numeroFactura) {
        this.numeroFactura = numeroFactura;
    }

    public List<Linea> getLineas() {
        return lineas;
    }

    public void setLineas(List<Linea> lineas) {
        this.lineas = lineas;
    }

    public Double getSubTotal() {
        Double subtotal = 0.0;
        for (Linea linea: lineas) {
            subtotal += linea.getCantidad() * linea.getPrecio();
        }
        return subtotal;
    }
    
    public Double getIgv() {
        return getSubTotal() * IGV;
    }
    
    public Double getTotal() {
        return getSubTotal() + getIgv();
    }
    
    public void imprimir() {
        System.out.println("Razon social = " + getRazonSocial());
        System.out.println("Numero de factura = " + getNumeroFactura());
        SimpleDateFormat sf = new SimpleDateFormat("dd/mm/YYYY");
        System.out.println("Fecha = " + sf.format(getFecha()));
        for (Linea linea : lineas) {
            linea.imprimir();
        }
        System.out.println("Sub total = " + getSubTotal());
        System.out.println("IGV = "+ getIgv());
        System.out.println("Total = "+ getTotal());        
    }
}
